package edu.eam.gruposenior.gestorLEcciones.entidades;

import java.io.Serializable;
import javax.persistence.*;

import java.util.List;

/**
 * The persistent class for the categoria_subcategoria database table.
 * 
 */
@Entity
@Table(name = "categoria_subcategoria")
@NamedQueries({
		@NamedQuery(name = CategoriaSubcategoria.FIND_ALL, query = "select c from CategoriaSubcategoria c"),
		@NamedQuery(name = CategoriaSubcategoria.FIND_CATEGORIA_BY_CATEGORIA, query = "select c from CategoriaSubcategoria c where c.categoriaSubcategoria.id=:"
				+ CategoriaSubcategoria.PARAMETRO_CATEGORIA) })
public class CategoriaSubcategoria implements Serializable {

	/**
	 * Constante para la named Query de buscar todos las Categorias.
	 */
	public static final String FIND_ALL = "CategoriaSubcategoria.findAll";

	public static final String FIND_CATEGORIA_BY_CATEGORIA = "CategoriaSubcategoria.findCategoriaByCategoria";

	/**
	 * Constante para la named Query de buscar todos las Lecciones Aprendidas.
	 */
	public static final String PARAMETRO_CATEGORIA = "idCategoria";

	private static final long serialVersionUID = 1L;

	@Id
	@GeneratedValue(strategy = GenerationType.IDENTITY)
	private Long id;

	private String nombre;

	// bi-directional many-to-one association to CategoriaSubcategoria
	@ManyToOne
	@JoinColumn(name = "padre")
	private CategoriaSubcategoria categoriaSubcategoria;

	// bi-directional many-to-one association to CategoriaSubcategoria
	@OneToMany(mappedBy = "categoriaSubcategoria", fetch = FetchType.EAGER)
	private List<CategoriaSubcategoria> categoriaSubcategorias;

	// bi-directional many-to-one association to LeccionAprendida
	@OneToMany(mappedBy = "categoriaSubcategoria", fetch = FetchType.EAGER)
	private List<LeccionAprendida> leccionAprendidas;

	public CategoriaSubcategoria() {
	}

	public String getNombre() {
		return this.nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public CategoriaSubcategoria getCategoriaSubcategoria() {
		return this.categoriaSubcategoria;
	}

	public void setCategoriaSubcategoria(
			CategoriaSubcategoria categoriaSubcategoria) {
		this.categoriaSubcategoria = categoriaSubcategoria;
	}

	public List<CategoriaSubcategoria> getCategoriaSubcategorias() {
		return this.categoriaSubcategorias;
	}

	public void setCategoriaSubcategorias(
			List<CategoriaSubcategoria> categoriaSubcategorias) {
		this.categoriaSubcategorias = categoriaSubcategorias;
	}

	public List<LeccionAprendida> getLeccionAprendidas() {
		return this.leccionAprendidas;
	}

	public void setLeccionAprendidas(List<LeccionAprendida> leccionAprendidas) {
		this.leccionAprendidas = leccionAprendidas;
	}

	/**
	 * @return the id
	 */
	public Long getId() {
		return id;
	}

	/**
	 * @param id
	 *            the id to set
	 */
	public void setId(Long id) {
		this.id = id;
	}

}